Conventionally employed computer systems commonly include a TCP (Transmission Control Protocol) processing layer and an IP (Internet Protocol) layer as part of the kernel to facilitate the transmission and receipt of data over a networked system. Network Interface Cards (NIC's) are commonly used to enable computers to be connected with other systems in a network.
Commonly, when message packets arrive at a receiving computer system they are processed by the TCP and IP layers of the kernel (i.e., the network protocol stack)(also referred to as the TCP/IP stack). With the steadily increasing capabilities of modern NIC's, throughput of on the order of 1 Gb/s (gigabit per second) is possible. Although advantageous from a data transfer perspective, such high data transfer rates can, and often, do overwhelm the kernel. In fact, the processing in the TCP layer and IP layer can so occupy the kernel, that in many cases, the kernel spends between 70 and 80 percent (or more) of the total CPU resources processing packets. Thus, little other data processing can be performed in the CPU. As a result, little processing power remains for the implementation of applications. This can drastically compromise system efficiency.
In an effort to address this problem some companies have constructed NIC's that incorporate ASIC's (Application Specific Integrated Circuits) configured to implement various functions. In particular, some types of NIC's use an on-card ASIC to perform TCP processing to enable communication with other systems connected with a network. These NIC's are sometimes called TNIC'S. When long message streams are to be received by a computer system, the processing of these messages can, in some circumstances, be offloaded onto the TCP and IP layers of the TNIC. In such circumstances the TNIC can relieve some of the TCP/IP processing burden from the kernel of the CPU. Thus, offloading simply amounts to transferring TCP/IP processing from the kernel to an associated TNIC card.
Commonly, the kernel accepts a connection and then offloads the TCP/IP processing during a data transfer phase of message processing. For purposes of this patent a connection refers to a message stream established between two communication endpoints. In a connection, the endpoints can operate as a remote endpoint (at some distant non-local node) and a local endpoint (generally operating locally on a host CPU). In a connection the endpoints are configured to allow the exchange of data between the endpoints. These endpoints are commonly identified using unique IP addresses and unique port identifiers. Data is exchanged between the endpoints, for example, as message streams comprising sequences of data packets that are transmitted between the endpoints.
As stated briefly above, TCP/IP processing of these message streams of these connections can be offloaded from the kernel onto a TNIC during a data transfer phase of message processing. Unfortunately, the offloading of such connections from the kernel to the systems of the TNIC can be very time intensive. Commonly, the set-up for such offloading requires allocating resources in the TNIC driver and other hardware as well as synchronizing a connection state across various data structures. This set-up process is time consuming, commonly taking on the order of several milliseconds (ms) (generally in the range of about 10-15 ms) to set-up and offload the connection onto the TNIC for subsequent processing. This makes such offloading very useful for long-lived connections, but is less useful for very short-lived connections. Internet and web-based message commonly have short connections (e.g., commonly lasting on the order of a few milliseconds). Under such conditions, the set-up time required to offload the message traffic onto a TNIC is longer than the transmission time for the entire internet-based message. In other words, offloading the connection onto the TNIC actually takes longer that the entire transmission time for the stream of message packets comprising the message and does not provide any real relief for the kernel. Thus, in conventional implementations, the TCP/IP layers of the TNIC cannot effectively accommodate the need for offloading of short-lived connections (e.g., internet and web-based connections) and therefore do not substantially reduce the processing burden on the kernel. In addition, a NIC may be incapable of supporting some network connections that require special processing capabilities. Consequently, using the TNIC to handle all network connections in accordance with conventional methods can be counter-productive to performance. Additionally, with web-based (internet) message traffic growing on a daily basis, any mode of operation for a computer system (including TNIC) that can relieve the kernel of some of the TCP/IP processing burden for short-lived connections (e.g., internet message packets) will substantially enhance performance in the CPU.